package 力扣日常刷题.木22二月.第11天217;

/**
 * @author 帅小伙
 * @date 2022/2/17
 * @description
 * 除了两个数字 出现两次  其他数字只出现1次
 * 数字分成两组
 *      1.两个只出现一次的数字在不同组中
 */
public class Demo78JZ数组中数字出现的次数 {


    public int[] singleNumbers(int[] nums) {
        int res = 0;
        for (int num : nums) res ^= num;
        int div = 1;
        // 找到res第一个1
        while ((div & res) == 0)div <<= 1;
        int a = 0,b = 0;
        for (int num : nums) {
            if((num & div) == 0) a^=num;
            else b ^= num;
        }
        return new int[]{a,b};
    }

}
